package sohsite.pelada.jogo;

import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Collection;

import sohsite.excecao.EntradaInexistenteException;
import sohsite.pelada.pelada.Pelada;
import sohsite.pelada.peladeiroJogo.PeladeiroJogo;


public class Jogo implements Comparable<Jogo>{
	
	private Integer id;
	private String descricao;
	private Timestamp data;
	private Pelada pelada;
	private Collection<PeladeiroJogo> peladeirosJogo;
	
	public Jogo(){
		
	}
	public Jogo(Integer id, String descricao, Timestamp data, Pelada pelada, Collection<PeladeiroJogo> peladeirosJogo) {
		this.id = id;
		this.descricao = descricao;
		this.data = data;
		this.pelada = pelada;
		this.peladeirosJogo = peladeirosJogo;
	}
	
	public Jogo(String descricao,
			Timestamp data, Pelada pelada, Collection<PeladeiroJogo> peladeirosJogo) {
		this.descricao = descricao;
		this.data = data;
		this.pelada = pelada;
		this.peladeirosJogo = peladeirosJogo;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public Integer getId() {
		return id;
	}

	public Timestamp getData() {
		return data;
	}

	public void setData(Timestamp data) {
		this.data = data;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public Pelada getPelada() {
		return pelada;
	}

	public void setPelada(Pelada pelada) {
		this.pelada = pelada;
	}
	
	public Collection<PeladeiroJogo> getPeladeirosJogo() {
		return peladeirosJogo;
	}

	public void setPeladeirosJogo(Collection<PeladeiroJogo> peladeirosJogo) {
		this.peladeirosJogo = peladeirosJogo;
	}

	public boolean equals(Object jogo){
		Jogo j = (Jogo)jogo;
		boolean retorno = false;
		
		if(this.id == j.getId()){
			retorno = true; 
		}
		
		return retorno;
	}
	
	public boolean existePeladeiro(int idPeladeiro){
		boolean ret = false;
		if(this.peladeirosJogo!=null){
			for(PeladeiroJogo pj: this.peladeirosJogo){
				if(pj.getPeladeiro().getId() == idPeladeiro){
					ret = true;
					break;
				}
			}
		}
		return ret;
	}
	
	public PeladeiroJogo getPeladeiroJogo(int idPeladeiro) throws EntradaInexistenteException{
		for (PeladeiroJogo p : this.getPeladeirosJogo()){
			if (p.getPeladeiro().getId() == idPeladeiro){
				return p;
			}
		}
		throw new EntradaInexistenteException();
	}
	
	public String getDataJogo(){
		String d = "";
		Calendar cal = Calendar.getInstance();
		cal.setTime(this.data);
		int ano = cal.get(Calendar.YEAR);  
		int mes = cal.get(Calendar.MONTH)+1;  
		int dia = cal.get(Calendar.DAY_OF_MONTH);
		d = ""+(dia<10?"0"+dia:""+dia)+  
			"/"+(mes<10?"0"+mes:""+mes)+
			"/"+ano;
		return d;
	}
	
	public String getHoraJogo(){
		String h = "";
		Calendar cal = Calendar.getInstance();
		cal.setTime(this.data);
		int hora = cal.get(Calendar.HOUR_OF_DAY);  
		int min = cal.get(Calendar.MINUTE);  
		
		h = ""+(hora<10?"0"+hora:""+hora)+  
			":"+(min<10?"0"+min:""+min);
		return h;
	}
	@Override
	public int compareTo(Jogo o) {
		return this.data.compareTo(o.data);
	}
	
}
